Software which operates between the user and the operating system, often to make the latter easier to use.